PostgreSQL HR 示例库

1 背景知识

许多人先学习了 Oracle 数据库然后再学习 PostgreSQL 数据库,所以对于 PostgreSQL Sakila示例库 很陌生,如果想使用 OracleHR 示例库,则可以使用以下生成一个跟 Oracle 一样的。

2 HR 脚本导入

2.1 创建表结构

将会创建一个 schema hr,并创建 7 张表,具体每张表的含义如下:

表名称 说明
regions 地区表
countries 国家表
locations 位置表
departments 部门表
jobs 岗位表
employees 人员表
job_history 人员历史表

2.2 上传脚本文件

  1. 上传 hr.sql 脚本到 /soft
  2. 更改脚本属主和属主。
su - root
chown postgres:postgres /soft/  -R

2.3 导入数据

psql -U postgres -d postgres
createdb testdb
psql -U postgres -d testdb -f /soft/hr.sql 

2.4 删除数据

psql -U postgres -d testdb -c  "DROP SCHEMA hr CASCASE"

3 查询示例

接下来对于示例数据进行演示。

3.1 demo1

SELECT first_name "First", last_name "Last", 
SALARY "Salary", COMMISSION_PCT "%"
FROM employees
WHERE salary >=11000 AND commission_pct IS NOT NULL;

3.2 demo2

SELECT DENSE_RANK(3000) WITHIN GROUP (ORDER BY salary DESC) "Rank"
FROM employees
WHERE job_id LIKE '%CLERK';

3.3 demo3

SELECT e.first_name || ' ' || e.last_name "Name",
  l.city || ', ' || c.country_name "Location"
FROM employees e, departments d, locations l, countries c
WHERE e.department_id=d.department_id AND
  d.location_id=l.location_id AND
  l.country_id=c.country_id
ORDER BY last_name;